﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Liquidaciones.Models;
using Liquidaciones.Repositories;
using System.IO;
using System.Web.Security;

namespace Liquidaciones.Controllers
{
    public class EmpleadoController : Controller
    {
        EmpleadoRepository empleadoRepository = new EmpleadoRepository();
        //
        // GET: /Empleado/

        public ActionResult Index(String username)
        {
            ViewBag.empleado = empleadoRepository.Get((Guid)Membership.GetUser().ProviderUserKey);
            ViewBag.empleado.MisLiquidaciones.Sort();
            
            return View();
        }

        public ActionResult Ver(Guid id)
        {
            var empleado = empleadoRepository.Get(id);
            ViewBag.empleado = empleado;            
            return View();
        }

        public ActionResult GetFoto(Guid id) //Trae la foto de un empleado de la base de datos y la devuelve como archivo.
        {
            return File(empleadoRepository.Get(id).Foto, "image/jpeg"); //Hago el find del empleado con el id que recibo y convierto la foto a jpeg y se la paso a la view.
        }
       
        public ActionResult Editar(Guid id)
        {
            Empleado empleado = empleadoRepository.Get(id);
            ViewBag.empleado = empleado;
            return View();
        }

        public ActionResult EditarEmpleado(Guid id)
        {
            Empleado empleado = empleadoRepository.Get(id);
            empleado.Nombre = Request["Nombre"];
            empleado.Apellido = Request["Apellido"];
            empleado.Dni = Request["Dni"];
            empleado.Email = Request["Email"];
            empleado.Nacimiento = DateTime.Parse(Request["Nacimiento"]);

            try
            {
                empleadoRepository.Save();
            }
            catch (Exception e)
            { 
                ViewBag.Error = e.Message;
                return Redirect(Url.Action("Error", "Exception"));
            }

            return Redirect(Url.Action("Ver", "Empleado", new { id = empleado.IdEmpleado }));
        }

        //COMPLETAR 
        public ActionResult Eliminar(Guid id)
        {
            var empleado = empleadoRepository.Get(id);
            Membership.DeleteUser(Membership.GetUser(id).UserName);
            ViewBag.empleado = empleado;
            return View();            
        }

        public ActionResult EliminarEmpleado(Guid id)
        {
            Empleado empleado = empleadoRepository.Get(id);
            empleadoRepository.Delete(empleado);

            return Redirect(Url.Action("Ver_Empleados", "Administrador"));
        }
    }
}
